package main

import (
	"fmt"
	"os"
)

//作业 基于map类型实现客户关系管理系统(客户增删改查)。客户信息包括姓名、年龄、职业 map嵌套map
// 数据结构采用以下结构
//map[strint]map[string][string]
//map[hr:map[name:xx age:xx salary:xx]]
func MgrMap() {
	custormersmap := make(map[string]map[string]string)
	for {
		fmt.Println(
			`
			0.增加客户信息
			1.查看单个客户信息
			2.查看所有客户信息
			3.删除客户信息
			4.修改客户信息
			5.退出系统
	`)
		var choice int
		fmt.Println("输入你的选择:")
		fmt.Scan(&choice)
		switch choice {
		case 0:
			fmt.Println("增加客户信息")
			var worker, name, age, tel string
			if _, ok := custormersmap[worker]; ok {
				fmt.Printf("客户 %s 已存在\n", worker)
				return
			}
			fmt.Println("输入职位:")
			fmt.Scan(&worker)
			fmt.Println("输入姓名:")
			fmt.Scan(&name)
			fmt.Println("输入年龄:")
			fmt.Scan(&age)
			fmt.Println("输入tel:")
			fmt.Scan(&tel)
			personmap := make(map[string]string)
			personmap["name"] = name
			personmap["age"] = age
			personmap["tel"] = tel
			custormersmap[worker] = personmap //map类型增加元素的方式
			//  索引      worker                             worker
			//	值  map[string]string     map[string]string
			//  键-->string对应的就是      name, age, tel
			//  值-->string对应的就是  	name, age, tel所输入的值
			fmt.Println("增加客户信息成功~~~")
		case 1:
			fmt.Println("查看单个职位对应的员工信息") //[ops map[age:24 name:wxd tel:119]]
			var worker string
			fmt.Scan(&worker)
			if _, ok := custormersmap[worker]; !ok { //判断这个key是否存在,ok的默认值是true,
				fmt.Printf("职位 %s 不存在\n", worker)
				return
			} else {
				fmt.Printf("职位:%s,姓名:%s,年龄:%s,手机号:%s\n", worker, custormersmap[worker]["name"], custormersmap[worker]["age"], custormersmap[worker]["tel"])
			}
		case 2:
			fmt.Println("查看所有职位对应的员工信息")
			for key, value := range custormersmap {
				fmt.Printf("职位:%s\n", key)
				for k, v := range value {
					fmt.Printf("%s:%s\n", k, v)
				}
			}
		case 3:
			fmt.Println("删除客户信息.输入要删除的key")
			var worker string
			fmt.Scan(&worker)
			if _, ok := custormersmap[worker]; !ok {
				fmt.Printf("客户 %s 不存在\n", worker)
				return
			}
			delete(custormersmap, worker)
		case 4:
			fmt.Println("修改客户信息.输入要修改客户的key")
			var worker string
			fmt.Scan(&worker)
			if _, ok := custormersmap[worker]; !ok {
				fmt.Printf("客户 %s 不存在\n", worker)
				return
			}
			var name, age, tel string
			fmt.Println("输入新姓名:")
			fmt.Scan(&name)
			fmt.Println("输入新年龄:")
			fmt.Scan(&age)
			fmt.Println("输入新tel:")
			fmt.Scan(&tel)
			custormersmap[worker]["name"] = name
			custormersmap[worker]["age"] = age
			custormersmap[worker]["tel"] = tel
			fmt.Println("修改客户信息成功")
		case 5:
			os.Exit(10002)
		default:
			fmt.Println("输入有误~~~")
			os.Exit(10001)
		}
	}
}
func main() {
	MgrMap()
}
